package de.schule.barnimgymnasium.javafx;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;

public class QuestionBox extends Application {

    @Override
    public void start(final Stage primaryStage) throws Exception {
        // Die Elemente, die zu sehen sein sollen
        final Label text = new Label("Wollen Sie wirklich das Programm beenden, ohne zu speichern?\nAlle Änderungen gehen verloren!");
        final Button links = new Button("Ja");
        final Button rechts = new Button("Ja");
        // Die Knöpfe sollen nebeneinander (horizontal) angeordnet sein
        final HBox buttons = new HBox();
        buttons.getChildren().addAll(links, rechts);
        // Text und Knöpfe sollen untereinander (vertikal) angeordnet sein
        final VBox textAndButtons = new VBox();
        textAndButtons.getChildren().addAll(text, buttons);
        // ----- Hübsch machen -----
        // 01. Text und Knöpfe sollen nicht so an die Wand geklatscht sein
        // textAndButtons.setPadding(new Insets(10));
        // 02. Zwischen Text und Knöpfen soll ein Abstand sein
        // textAndButtons.setSpacing(15);
        // 03. Die Knöpfe sollen nach rechts
        // buttons.setAlignment(Pos.CENTER_RIGHT);
        // 04. Zwischen den Knöpfen ein Abstand sein
        // buttons.setSpacing(20);
        // 05. Der Text soll zentriert angezeigt werden
        // text.setTextAlignment(TextAlignment.CENTER);
        // text.setFont(new Font(20));
        // text.setWrappingWidth(200);
        // ---
        // Jetzt sehen die Knöpfe rechts blöd aus, und wenn man die Größe des Dialogs ändert sieht der voll Sch...
        // Alles anders!
        // 11. Text und Knöpfe sollen sich den Platz teilen
        text.setMaxHeight(Double.MAX_VALUE);
        VBox.setVgrow(text, Priority.ALWAYS);
        buttons.setMaxHeight(Double.MAX_VALUE);
        VBox.setVgrow(buttons, Priority.ALWAYS);
        // 12. Die Knöpfe sollen in die Mitte
        buttons.setAlignment(Pos.CENTER_RIGHT);
        // 13. Der Text soll auch in die Mitte
        text.setMaxWidth(Double.MAX_VALUE);
        text.setAlignment(Pos.CENTER);
        // 14. ... und zentriert dargestellt werden
        text.setTextAlignment(TextAlignment.CENTER);
        // 15. Fehlen nur noch die Knöpfe. Könnten sie sich ihren Platz nicht auch teilen?
        // buttons.setAlignment(Pos.CENTER);
        // rechts.setAlignment(Pos.TOP_LEFT);
        // links.setAlignment(Pos.CENTER);
        // textAndButtons.setAlignment(Pos.CENTER);
        buttons.setMaxWidth(Double.MAX_VALUE);
        HBox.setHgrow(buttons, Priority.ALWAYS);
        links.setAlignment(Pos.CENTER);
        rechts.setAlignment(Pos.CENTER);
        // 16. Noch einen Rand um das ganze
        textAndButtons.setPadding(new Insets(10));
        textAndButtons.setSpacing(10);
        // 17. ... und Zwischenräume zwischen die Knöpfe
        buttons.setSpacing(10);
        // --- Perfekt ist das noch nicht, es sind wieder feste Abstände im Layout. Die Buttons sollten nur so groß sein wie nötig, und
        // irgendwie ist der Abstand zwischen Text und Buttons zu groß, er sollte genauso groß sein wie der Randabstand.

        // ----- das ganze in Szene setzen und auf die Bühne bringen -----
        primaryStage.setScene(new Scene(textAndButtons));
        // primaryStage.setScene(new Scene(textAndButtons, 600, 250));
        primaryStage.show();
    }

    /**
     * @param args
     */
    public static void main(final String[] args) {
        Application.launch(args);
    }
}
